const path = require("path");
const crypto = require("crypto");

extractFileHashByRegex = (filePath) => {
    // 1. 定义正则表达式：匹配由32个十六进制字符（小写a-f, 数字）或40个字符组成的序列
    // 此例中，我们匹配一个40字符的十六进制字符串
    const regex = /_([a-f0-9]{40})/;
    // 2. 在路径中执行匹配
    const match = filePath.match(regex);
    // 3. 如果匹配成功，返回第一个捕获组（即目标字符串）
    if (match) {
        return match[1];
    } else {
        return null; // 或根据需求返回空字符串、抛出错误等
    }
}

generateSha1ByBasename = (filePath) => {
    return generate_sha1(path.basename(filePath))
}

generate_sha1 = (text) => {
    if (text) {
        return crypto.createHash('sha1').update(text).digest('hex');
    }
    const current_date = (new Date()).valueOf().toString();
    const random = Math.random().toString();
    return crypto.createHash('sha1').update(current_date + random).digest('hex');
}

module.exports = {
    extractFileHashByRegex,
    generateSha1ByBasename,
};